/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param val int整型 
 * @return ListNode类
 */
 function deleteNode( head ,  val ) {
  // write code here
  if(head === null) return null // 如果链表长度为null
  if(head.val === val) { // 如果删除的的头结点
    return head.next // 头结点指向下一个节点 下一个节点是null 也符合
  }
  var cur = head
  var pre = null
  while(cur && cur.val !== val){ // 不存在删除的值不存在的情况
    pre = cur
    cur = cur.next
  }
  if(cur === null){
    return null // 如果删除的值不存在返回null
  }
  pre.next = cur.next
  return head
}
module.exports = {
  deleteNode : deleteNode
};